#ifndef __Collections_IEqualityComparer_H__
#define __Collections_IEqualityComparer_H__

///<summary>
/// IEqualityComparer<T>
///</summary>
#define Collections_IEqualityComparer(T) bindT(Collections_IEqualityComparer,T)
#define Declare_Collections_IEqualityComparer(T, Ti) \
	private enum { \
		_Collections_IEqualityComparer_##T##VIndex_Equals, \
		_Collections_IEqualityComparer_##T##VIndex_GetHashCode, \
		_Collections_IEqualityComparer_##T##VIndexNext, \
	}; \
	public interfaceT(Collections_IEqualityComparer,T,, \
		virtualT(Collections_IEqualityComparer,T,bool,Equals, Ti x, Ti y); \
		virtualT(Collections_IEqualityComparer,T,int_,GetHashCode, Ti obj); \
	);
#define Implement_Collections_IEqualityComparer(T, Ti) \
	Implement_TypeTI(Collections_IEqualityComparer,T,)

#endif /* __Collections_IEqualityComparer_H__ */